
Y}%                 @   sG  d  d l  Z d  d l Z d d l m Z m Z d d l m Z m Z m	 Z	 m
 Z
 m Z m Z m Z m Z m Z m Z m Z Gd d   d e  Z Gd d	   d	 e  Z Gd
 d   d e  Z Gd d   d e  Z Gd d   d e e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z d S)    N   )EnvironmentExceptionis_osx   )
GCC_CYGWIN	GCC_MINGWGCC_OSXGCC_STANDARDICC_STANDARDapple_buildtype_linker_argsget_gcc_soname_argsgnulike_buildtype_argsgnulike_buildtype_linker_argsCompilerIntelCompilerc                   s]  e  Z d  Z d   f d d  Z d d   Z d d   Z d d	   Z d
 d   Z d d   Z d d   Z	 d d   Z
 d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d  d!   Z d" d#   Z d$ d%   Z d& d'   Z d( d)   Z d* d+   Z d, d-   Z d. d/   Z d0 d1   Z d2 d3   Z d4 d5   Z d6 d7   Z   S)8FortranCompilerNc                sD   d |  _  t   j | |  | |  _ | |  _ t |  _ d |  _ d  S)Nfortranz$IMPLEMENTATION CLASSES MUST SET THIS)languagesuper__init__is_crossexe_wrapperr	   gcc_typeid)selfexelistversionr   r   )	__class__ X/mnt/raid6/a/bak/reczko/tools/protein/utils/meson-0.42.1/mesonbuild/compilers/fortran.pyr   "   s    				zFortranCompiler.__init__c             C   s   d j  |  j  S)N )joinr   )r   r   r   r   name_string+   s    zFortranCompiler.name_stringc             C   s#   |  j  t t t f k r g  Sd g S)Nz-fPIC)r   r   r   r   )r   r   r   r   get_pic_args.   s    zFortranCompiler.get_pic_argsc             C   s   d g S)Nz-sharedr   )r   r   r   r   get_std_shared_lib_link_args3   s    z,FortranCompiler.get_std_shared_lib_link_argsc             C   s   d S)NTr   )r   r   r   r   needs_static_linker6   s    z#FortranCompiler.needs_static_linkerc       
      C   sH  t  j j | d  } t  j j | d  } t | d   } | j d  Wd  QX|  j | d d } t j |  j | | d | g  } | j	   | j
 d k r t d	 |  j     n  |  j r |  j d  k r d  S|  j | g } n	 | g } t j | d
 t j d t j }	 |	 j	   |	 j
 d k rDt d |  j     n  d  S)Nzsanitycheckf.f90ZsanitycheckfwzNprogram prog
     print *, "Fortran compilation is working."
end program prog
linkTz-or   z%Compiler %s can not compile programs.stdoutstderrz<Executables created by Fortran compiler %s are not runnable.)ospathr!   openwriteget_cross_extra_flags
subprocessPopenr   wait
returncoder   r"   r   r   DEVNULL)
r   work_direnvironmentsource_namebinary_nameofileextra_flagspccmdlistper   r   r   sanity_check9   s&    #
		!
zFortranCompiler.sanity_checkc             C   s   t  j S)N)r   std_warn_args)r   levelr   r   r   get_std_warn_argsR   s    z!FortranCompiler.get_std_warn_argsc             C   s   t  | S)N)r   )r   	buildtyper   r   r   get_buildtype_argsU   s    z"FortranCompiler.get_buildtype_argsc             C   s   t    r t | St | S)N)r   r   r   )r   rA   r   r   r   get_buildtype_linker_argsX   s    	z)FortranCompiler.get_buildtype_linker_argsc             C   s   t  j j |  d | f S)Nr   )r*   r+   split)r   fnamer   r   r   split_shlib_to_parts]   s    z$FortranCompiler.split_shlib_to_partsc             C   s   t  |  j | | | | | |  S)N)r   r   )r   prefix
shlib_namesuffixr+   	soversionis_shared_moduler   r   r   get_soname_args`   s    zFortranCompiler.get_soname_argsc             C   s   g  S)Nr   )r   	outtargetoutfiler   r   r   get_dependency_gen_argsc   s    z'FortranCompiler.get_dependency_gen_argsc             C   s
   d | g S)Nz-or   )r   targetr   r   r   get_output_argsi   s    zFortranCompiler.get_output_argsc             C   s   d g S)Nz-Er   )r   r   r   r   get_preprocess_only_argsl   s    z(FortranCompiler.get_preprocess_only_argsc             C   s   d g S)Nz-cr   )r   r   r   r   get_compile_only_argso   s    z%FortranCompiler.get_compile_only_argsc             C   s   |  j  d  d   S)N)r   )r   r   r   r   get_linker_exelistr   s    z"FortranCompiler.get_linker_exelistc             C   s
   d | g S)Nz-or   )r   
outputnamer   r   r   get_linker_output_argsu   s    z&FortranCompiler.get_linker_output_argsc             C   s   d | g S)Nz-Ir   )r   r+   	is_systemr   r   r   get_include_argsx   s    z FortranCompiler.get_include_argsc             C   s   d S)N-I)rY   r   )r   r   r   r   get_module_incdir_args{   s    z&FortranCompiler.get_module_incdir_argsc             C   s   d | g S)Nz-Jr   )r   r+   r   r   r   get_module_outdir_args~   s    z&FortranCompiler.get_module_outdir_argsc             C   s   | d |  j    S)N.)get_depfile_suffix)r   objfiler   r   r   depfile_for_object   s    z"FortranCompiler.depfile_for_objectc             C   s   d S)Ndr   )r   r   r   r   r]      s    z"FortranCompiler.get_depfile_suffixc             C   s   g  S)Nr   )r   r   r   r   get_std_exe_link_args   s    z%FortranCompiler.get_std_exe_link_argsc             C   s   |  j  | | | | |  S)N)build_unix_rpath_args)r   	build_dirfrom_dirrpath_pathsbuild_rpathinstall_rpathr   r   r   build_rpath_args   s    z FortranCompiler.build_rpath_argsc             C   s   | j    d S)Nz.mod)lower)r   module_namer   r   r   module_name_to_filename   s    z'FortranCompiler.module_name_to_filenamec             C   s   d g S)Nz-Wallr   )r   r?   r   r   r   get_warn_args   s    zFortranCompiler.get_warn_argsc             C   s   d g S)Nz-wr   )r   r   r   r   get_no_warn_args   s    z FortranCompiler.get_no_warn_args)__name__
__module____qualname__r   r"   r#   r$   r%   r=   r@   rB   rC   rF   rL   rO   rQ   rR   rS   rT   rV   rX   rZ   r[   r_   r]   ra   rh   rk   rl   rm   r   r   )r   r   r   !   s6   	r   c                   sp   e  Z d  Z d d   f d d  Z d d   Z d d   Z d d	   Z d
 d   Z d d   Z d d   Z	   S)GnuFortranCompilerNc                sA   t    j | | | d d  | |  _ | p. i  |  _ d |  _ d  S)Nr   gcc)r   r   r   definesr   )r   r   r   r   r   r   rs   )r   r   r   r      s    	zGnuFortranCompiler.__init__c             C   s   | |  j  k S)N)rs   )r   definer   r   r   has_builtin_define   s    z%GnuFortranCompiler.has_builtin_definec             C   s   | |  j  k r |  j  | Sd  S)N)rs   )r   rt   r   r   r   get_builtin_define   s    z%GnuFortranCompiler.get_builtin_definec             C   s   d g S)Nz-piper   )r   r   r   r   get_always_args   s    z"GnuFortranCompiler.get_always_argsc             C   s   d g S)Nz
--coverager   )r   r   r   r   get_coverage_args   s    z$GnuFortranCompiler.get_coverage_argsc             C   s   d g S)Nz
--coverager   )r   r   r   r   get_coverage_link_args   s    z)GnuFortranCompiler.get_coverage_link_argsc             C   s   d | g S)zX
        The name of the outputted import library

        Used only on Windows
        z-Wl,--out-implib=r   )r   
implibnamer   r   r   gen_import_library_args   s    z*GnuFortranCompiler.gen_import_library_args)
rn   ro   rp   r   ru   rv   rw   rx   ry   r{   r   r   )r   r   rq      s   rq   c                   sU   e  Z d  Z d   f d d  Z d d   Z d d   Z d d	   Z d
 d   Z   S)G95FortranCompilerNc                s)   t    j | | | d d  d |  _ d  S)Nr   g95)r   r   r   )r   r   r   r   r   )r   r   r   r      s    zG95FortranCompiler.__init__c             C   s   d | g S)Nz-fmod=r   )r   r+   r   r   r   r[      s    z)G95FortranCompiler.get_module_outdir_argsc             C   s   d g S)Nz-piper   )r   r   r   r   rw      s    z"G95FortranCompiler.get_always_argsc             C   s   g  S)Nr   )r   r   r   r   rm      s    z#G95FortranCompiler.get_no_warn_argsc             C   s   d | g S)zX
        The name of the outputted import library

        Used only on Windows
        z-Wl,--out-implib=r   )r   rz   r   r   r   r{      s    z*G95FortranCompiler.gen_import_library_args)rn   ro   rp   r   r[   rw   rm   r{   r   r   )r   r   r|      s
   r|   c                   sa   e  Z d  Z d   f d d  Z d d   Z d d   Z d d	   Z d
 d   Z d d   Z   S)SunFortranCompilerNc                s)   t    j | | | d d  d |  _ d  S)Nr   Zsun)r   r   r   )r   r   r   r   r   )r   r   r   r      s    zSunFortranCompiler.__init__c             C   s   d g S)Nz-fppr   )r   rM   rN   r   r   r   rO      s    z*SunFortranCompiler.get_dependency_gen_argsc             C   s   g  S)Nr   )r   r   r   r   rw      s    z"SunFortranCompiler.get_always_argsc             C   s   g  S)Nr   )r   r?   r   r   r   rl      s    z SunFortranCompiler.get_warn_argsc             C   s   d S)N-M)r   r   )r   r   r   r   rZ      s    z)SunFortranCompiler.get_module_incdir_argsc             C   s   d | g S)Nz-moddir=r   )r   r+   r   r   r   r[      s    z)SunFortranCompiler.get_module_outdir_args)	rn   ro   rp   r   rO   rw   rl   rZ   r[   r   r   )r   r   r~      s   r~   c               @   sC   e  Z d  Z d d g Z d d d  Z d d   Z d d	   Z d S)
IntelFortranCompilerz-warnallNc             C   s?   d |  _  t j |  | | | |  t j |  t  d |  _ d  S)Nf90fforftnfppintel)zf90r   zforzftnzfpp)file_suffixesr   r   r   r
   r   )r   r   r   r   r   r   r   r   r      s    	zIntelFortranCompiler.__init__c             C   s
   d | g S)Nz-moduler   )r   r+   r   r   r   r[      s    z+IntelFortranCompiler.get_module_outdir_argsc             C   s   t  j S)N)r   r>   )r   r?   r   r   r   rl      s    z"IntelFortranCompiler.get_warn_args)rn   ro   rp   r>   r   r[   rl   r   r   r   r   r      s   r   c                   sF   e  Z d  Z d g Z d   f d d  Z d d   Z d d   Z   S)	PathScaleFortranCompilerz	-fullwarnNc                s)   t    j | | | d d  d |  _ d  S)Nr   Z	pathscale)r   r   r   )r   r   r   r   r   )r   r   r   r      s    z!PathScaleFortranCompiler.__init__c             C   s
   d | g S)Nz-moduler   )r   r+   r   r   r   r[      s    z/PathScaleFortranCompiler.get_module_outdir_argsc             C   s   t  j S)N)r   r>   )r   r?   r   r   r   r@      s    z*PathScaleFortranCompiler.get_std_warn_args)rn   ro   rp   r>   r   r[   r@   r   r   )r   r   r      s   	r   c                   s^   e  Z d  Z d g Z d   f d d  Z d d   Z d d   Z d	 d
   Z d d   Z   S)PGIFortranCompilerz-Minform=informNc                s)   t    j | | | d d  d |  _ d  S)Nr   Zpgi)r   r   r   )r   r   r   r   r   )r   r   r   r     s    zPGIFortranCompiler.__init__c             C   s   d S)N-module)r   r   )r   r   r   r   rZ   
  s    z)PGIFortranCompiler.get_module_incdir_argsc             C   s
   d | g S)Nz-moduler   )r   r+   r   r   r   r[     s    z)PGIFortranCompiler.get_module_outdir_argsc             C   s   t  j S)N)r   r>   )r   r?   r   r   r   rl     s    z PGIFortranCompiler.get_warn_argsc             C   s   d g S)Nz-silentr   )r   r   r   r   rm     s    z#PGIFortranCompiler.get_no_warn_args)	rn   ro   rp   r>   r   rZ   r[   rl   rm   r   r   )r   r   r     s   	r   c                   sF   e  Z d  Z d g Z d   f d d  Z d d   Z d d   Z   S)	Open64FortranCompilerz	-fullwarnNc                s)   t    j | | | d d  d |  _ d  S)Nr   Zopen64)r   r   r   )r   r   r   r   r   )r   r   r   r     s    zOpen64FortranCompiler.__init__c             C   s
   d | g S)Nz-moduler   )r   r+   r   r   r   r[     s    z,Open64FortranCompiler.get_module_outdir_argsc             C   s   t  j S)N)r   r>   )r   r?   r   r   r   rl   !  s    z#Open64FortranCompiler.get_warn_args)rn   ro   rp   r>   r   r[   rl   r   r   )r   r   r     s   	r   c                   sC   e  Z d  Z g  Z d   f d d  Z d d   Z d d   Z   S)NAGFortranCompilerNc                s)   t    j | | | d d  d |  _ d  S)Nr   Znagfor)r   r   r   )r   r   r   r   r   )r   r   r   r   (  s    zNAGFortranCompiler.__init__c             C   s
   d | g S)Nz-mdirr   )r   r+   r   r   r   r[   ,  s    z)NAGFortranCompiler.get_module_outdir_argsc             C   s   t  j S)N)r   r>   )r   r?   r   r   r   rl   /  s    z NAGFortranCompiler.get_warn_args)rn   ro   rp   r>   r   r[   rl   r   r   )r   r   r   %  s   r   )os.pathr*   r/   mesonlibr   r   	compilersr   r   r   r	   r
   r   r   r   r   r   r   r   rq   r|   r~   r   r   r   r   r   r   r   r   r   <module>   s   Lv 