§
    `Štj±ž  ã                   óÒ  — d Z g d¢ZddlZddl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mZmZmZmZ ddlmZmZ dd	lmZmZ dd
lmZ ddlmZmZmZmZmZ ddlm Z  ddlm!Z! ddl"m#Z# e$Z%g d¢Z& G d„ de'¦  «        Z(d„ Z)d„ Z*d„ Z+ G d„ de¦  «        Z,dZ-da.da/d„ Z0	 	 	 d*d„Z1d+d„Z2	 	 d*d„Z3 e4¦   «         a5	 	 	 	 	 	 	 d,d„Z6d-d„Z7d „ Z8 ej9        d!ej:        ¦  «        j;        Z< ej9        d"ej:        ¦  «        j;        Z= ej9        d#ej:        ¦  «        j;        Z> ej9        d$ej:        ¦  «        j?        Z@d%„ ZAd&„ ZB ej9        d'ej:        ¦  «        ZCd(„ ZDeEd)k    r e7¦   «          dS dS ).aé  numpy.distutils.fcompiler

Contains FCompiler, an abstract base class that defines the interface
for the numpy.distutils Fortran compiler abstraction model.

Terminology:

To be consistent, where the term 'executable' is used, it means the single
file, like 'gcc', that is executed, and should be a string. In contrast,
'command' means the entire command line, like ['gcc', '-c', 'file.c'], and
should be a list.

But note that FCompiler.executables is actually a dictionary of commands.

)Ú	FCompilerÚnew_fcompilerÚshow_fcompilersÚdummy_fortran_fileé    N)ÚPath)Úget_python_lib)ÚFancyGetopt)ÚDistutilsModuleErrorÚDistutilsExecErrorÚCompileErrorÚ	LinkErrorÚDistutilsPlatformError)Úsplit_quotedÚ	strtobool)Ú	CCompilerÚgen_lib_options)Úlog)Ú	is_stringÚall_stringsÚis_sequenceÚmake_temp_fileÚget_shared_lib_extension©Úfind_executable)Ú_shell_utilsé   )ÚEnvironmentConfig)ú.forú.ftnú.f77ú.fc                   ó   — e Zd ZdS )ÚCompilerNotFoundN)Ú__name__Ú
__module__Ú__qualname__© ó    ú`/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/numpy/distutils/fcompiler/__init__.pyr#   r#   -   s   € € € € € Ø€Dr(   r#   c                 óB   — t          | ¦  «        rt          | ¦  «        S | S ©N)r   r   ©Úss    r)   Úflaglistr.   0   s!   € Ý��|„|ð Ý˜A‰ŒÐàˆr(   c                 ó\   — t          | ¦  «        rt          | ¦  «        S t          | ¦  «        S r+   )r   r   Úboolr,   s    r)   Ústr2boolr1   6   s'   € Ý��|„|ð Ý˜‰|Œ|ÐÝ�‰7Œ7€Nr(   c                 ó>   — t          | ¦  «        ot          | ¦  «        S r+   )r   r   )Úseqs    r)   Úis_sequence_of_stringsr4   ;   s   € Ý�sÑÔÐ0¥¨CÑ 0Ô 0Ð0r(   c                   ó
  — e Zd ZdZ eddddedfdddedfdddedfdddedf¬	¦  «        Z edd
ddddddd¬¦	  «	        Z edGi dd“ddddedf“ddddedf“dddd edf“d!d"ddedf“d#d$d%d#edf“d&d'ddedf“d(d)ddedf“d*d+d,d*edf“d-d.ddedf“d/d0ddedf“dd1d2d3edf“d4d5ddedf“d6d7ddedf“d8d9d:d;edf“d<d=d>d?edf“d@dAd>d?edf“dBdCdDdEedf“ŽZ	dddddddddFœZ
ddgZdZdGZdZg ZddHgdgdgddIgddJgdgdBdKgddLœZdZdMZdNZdNZdZdOZg Zg dP¢ZdQZ e¦   «         ZdRZdSZdTZdUZi Z g dL¢Z!dZ"g Z#g Z$dV„ Z%dW„ Z&dX„ Z'dY„ Z( e(dZ¦  «        Z) e(d[¦  «        Z* e(d\¦  «        Z+ e(d]¦  «        Z, e(d<¦  «        Z- e(d@¦  «        Z. e(d^¦  «        Z/ e(d_¦  «        Z0d`„ Z1da„ Z2db„ Z3dc„ Z4dd„ Z5de„ Z6df„ Z7dg„ Z8dh„ Z9di„ Z:dj„ Z;dk„ Z<dl„ Z=dm„ Z>dn„ Z?do„ Z@dp„ ZAe?xZBZCe@xZDZEeAxZFZGdq„ ZHdr„ ZIddsgfdt„ZJddu„ZKdv„ ZLdw„ ZMdx„ ZNdy„ ZOdz„ ZP	 	 	 	 d€d{„ZQd|„ ZRd}„ ZSd~„ ZTdS )�r   a0  Abstract base class to define the interface that must be implemented
    by real Fortran compiler classes.

    Methods that subclasses may redefine:

        update_executables(), find_executables(), get_version()
        get_flags(), get_flags_opt(), get_flags_arch(), get_flags_debug()
        get_flags_f77(), get_flags_opt_f77(), get_flags_arch_f77(),
        get_flags_debug_f77(), get_flags_f90(), get_flags_opt_f90(),
        get_flags_arch_f90(), get_flags_debug_f90(),
        get_flags_fix(), get_flags_linker_so()

    DON'T call these methods (except get_version) after
    constructing a compiler instance or inside any other method.
    All methods, except update_executables() and find_executables(),
    may call the get_version() method.

    After constructing a compiler instance, always call customize(dist=None)
    method that finalizes compiler construction and makes the following
    attributes available:
      compiler_f77
      compiler_f90
      compiler_fix
      linker_so
      archiver
      ranlib
      libraries
      library_dirs
    Ú	config_fcNÚnooptFÚnoarchÚdebugÚverbose)Údistutils_sectionr7   r8   r9   r:   )zexe.compiler_f77ÚF77Úf77execNF)zexe.compiler_f90ÚF90Úf90execNF)zexe.compiler_fixr>   r?   NF)zexe.version_cmdNNNF)zexe.linker_soÚLDSHAREDÚldsharedNF)zexe.linker_exeÚLDÚldNF)NÚARÚarNF)NÚRANLIBÚranlibNF)	r;   Úcompiler_f77Úcompiler_f90Úcompiler_fixÚversion_cmdÚ	linker_soÚ
linker_exeÚarchiverrG   r;   Úf77z	flags.f77ÚF77FLAGSÚf77flagsTÚf90z	flags.f90ÚF90FLAGSÚf90flagsÚfreez
flags.freeÚ	FREEFLAGSÚ	freeflagsÚfixz	flags.fixÚoptz	flags.optÚFOPTÚopt_f77zflags.opt_f77Úopt_f90zflags.opt_f90Úarchz
flags.archÚFARCHÚarch_f77zflags.arch_f77Úarch_f90zflags.arch_f90zflags.debugÚFDEBUGÚfdebugÚ	debug_f77zflags.debug_f77Ú	debug_f90zflags.debug_f90Úflagszself.get_flagsÚFFLAGSÚfflagsrL   zflags.linker_soÚLDFLAGSÚldflagsrM   zflags.linker_exerE   zflags.arÚARFLAGSÚarflags)r!   r   ú.Fr   r    ú.f90ú.F90ú.f95r'   z-vz-fixedz-sharedz-cr)rK   rH   rI   rJ   rL   rM   rN   rG   z-cz-o z-I)	r   r   r    r!   rm   ro   rl   rn   z.FORz.oz.azlib%s%sz%s%sÚ c                 óŒ  — t          j        | g|¢R i |¤Ž | j                             | j        ¦  «        | _        | j                             | j        ¦  «        | _        | j                             | j        ¦  «        | _        | j                             ¦   «         | _        | j	        D ]}|| j        vr
d | j        |<   Œd| _
        d S )NF)r   Ú__init__Údistutils_varsÚcloneÚ_environment_hookÚcommand_varsÚ	flag_varsÚexecutablesÚcopyÚ_executable_keysÚ_is_customised)ÚselfÚargsÚkwÚes       r)   rr   zFCompiler.__init__Û   sÊ   € ÝÔ˜4Ð- $Ð-Ð-Ð-¨"Ð-Ð-Ð-Ø"Ô1×7Ò7¸Ô8NÑOÔOˆÔØ Ô-×3Ò3°DÔ4JÑKÔKˆÔØœ×-Ò-¨dÔ.DÑEÔEˆŒØÔ+×0Ò0Ñ2Ô2ˆÔØÔ&ð 	+ð 	+ˆAØ˜Ô(Ð(Ð(Ø&*�Ô  Ñ#øð $ˆÔÐÐr(   c                 óŒ  — |                       | j        ¦  «        }|j                             | j        ¦  «         |j                             |j        ¦  «        |_        |j                             |j        ¦  «        |_        |j                             |j        ¦  «        |_        |j	         
                    ¦   «         |_	        |S r+   )Ú__new__Ú	__class__Ú__dict__Úupdaters   rt   ru   rv   rw   rx   ry   )r|   Úobjs     r)   Ú__copy__zFCompiler.__copy__é   s™   € Ø�lŠl˜4œ>Ñ*Ô*ˆØŒ×Ò˜DœMÑ*Ô*Ð*Ø Ô/×5Ò5°cÔ6KÑLÔLˆÔØÔ+×1Ò1°#Ô2GÑHÔHˆÔØœ×+Ò+¨CÔ,AÑBÔBˆŒØœ/×.Ò.Ñ0Ô0ˆŒØˆ
r(   c                 ó*   — |                       ¦   «         S r+   )r†   ©r|   s    r)   ry   zFCompiler.copyò   s   € Ø�}Š}‰ŒÐr(   c                 ó.   ‡ — ˆ fd„}t          |¬¦  «        S )Nc                 ó0   •— | j         sJ ‚| j        ‰         S r+   )r{   rx   )r|   Úkeys    €r)   Úfgetz)FCompiler._command_property.<locals>.fgetù   s    ø€ ØÔ&Ð&Ð&Ð&ØÔ# CÔ(Ð(r(   )rŒ   )Úproperty)r‹   rŒ   s   ` r)   Ú_command_propertyzFCompiler._command_propertyø   s/   ø€ ð	)ð 	)ð 	)ð 	)ð 	)õ ˜TÐ"Ñ"Ô"Ð"r(   rK   rH   rI   rJ   rN   rG   c                 ó2   — |                       ||¦  «         d S r+   )Úset_command©r|   r‹   Úvalues      r)   Úset_executablezFCompiler.set_executable  s   € Ø×Ò˜˜eÑ$Ô$Ð$Ð$Ð$r(   c                 óf   — |                      ¦   «         D ]\  }}|                      ||¦  «         Œd S r+   )Úitemsr�   )r|   r~   ÚkÚvs       r)   Úset_commandszFCompiler.set_commands
  s@   € Ø—H’H‘J”Jð 	#ð 	#‰DˆAˆqØ×Ò˜Q Ñ"Ô"Ð"Ð"ð	#ð 	#r(   c                 óð   — || j         vrt          d|›d| j        j        ›�¦  «        ‚t	          |¦  «        rt          |¦  «        }|�#t          |dd …         ¦  «        sJ ||f¦   «         ‚|| j        |<   d S )Nzunknown executable 'z' for class r   )rz   Ú
ValueErrorr‚   r$   r   r   r4   rx   r‘   s      r)   r�   zFCompiler.set_command  s•   € Ø�dÔ+Ð+Ð+Ý�*à���d”nÔ-Ð-ð/ñ0ô 0ð 0õ �UÑÔð 	(Ý  Ñ'Ô'ˆEØˆ}Õ 6°u¸Q¸R¸R´yÑ AÔ Aˆ}ˆ}ÀCÈÀ<‰}Œ}ÐAØ %ˆÔ˜ÑÐÐr(   c                 óÊ  ‡ ‡‡— ‰ j         sJ ‚‰ j        Šˆfd„Šˆ fd„}dˆˆ fd„	}‰ j        } |d¦  «        }|s7 |d¦  «        }|rt          j        d|z  ¦  «         nEt          d|z  ¦  «        ‚ |d|¬	¦  «        }|st          j        d
|z  ¦  «          |d|¬	¦  «          |d||¬¦  «          |d||¬¦  «          |d||¬¦  «          |d¦  «          |d¦  «         dS )a3  Go through the self.executables dictionary, and attempt to
        find and assign appropriate executables.

        Executable names are looked for in the environment (environment
        variables, the distutils.cfg, and command line), the 0th-element of
        the command list, and the self.possible_executables list.

        Also, if the 0th element is "<F77>" or "<F90>", the Fortran 77
        or the Fortran 90 compiler executable is used, unless overridden
        by an environment setting.

        Subclasses should call this if overridden.
        c                 óR   •— | ‰v r‰|          S t          | ¦  «        }|x‰| <   ‰|<   |S r+   r   )ÚexeÚfc_exeÚ	exe_caches     €r)   Úcached_find_executablez:FCompiler.find_executables.<locals>.cached_find_executable-  s=   ø€ Ø�iÐÐØ  ”~Ð%Ý$ SÑ)Ô)ˆFØ17Ð7ˆI�c‰N˜Y vÑ.ØˆMr(   c                 óp   •— |�0t          |¦  «        s#t          | ›d|›d‰j        j        ›�¦  «        ‚d S d S )Nz value z is invalid in class )r4   rš   r‚   r$   )Únamer’   r|   s     €r)   Úverify_command_formz7FCompiler.find_executables.<locals>.verify_command_form3  sS   ø€ ØÐ Õ)?ÀÑ)FÔ)FÐ Ý à�T�T˜5˜5˜5 $¤.Ô"9Ð"9ð;ñ<ô <ð <ð !Ð Ð Ð r(   Nc                 ó´  •— ‰j                              | d ¦  «        }|sd S t          ‰j        | ¦  «        }|s||g‰j        z   }n|g‰j        z   }t          ¦   «         }g }|D ]D}|dk    r|}n|dk    r|}|r||v rŒ|                     |¦  «         |                     |¦  «         ŒE|D ]}	 ‰|	¦  «        }
|
r	|
|d<   |
c S Œ‰                     | d ¦  «         d S )Nz<F77>z<F90>r   )	rx   ÚgetÚgetattrrv   Úpossible_executablesÚsetÚaddÚappendr�   )Úexe_keyrO   rR   ÚcmdÚexe_from_environÚ	possiblesÚseenÚunique_possiblesr   r�   rž   r    r|   s              €€r)   Úset_exez+FCompiler.find_executables.<locals>.set_exe8  s9  ø€ ØÔ"×&Ò& w°Ñ5Ô5ˆCØð Ø�tõ  ' tÔ'8¸'ÑBÔBÐØ#ð KØ  #˜J¨Ô)BÑB�	�	à-Ð.°Ô1JÑJ�	å‘5”5ˆDØ!ÐØð +ð +�Ø˜’<�<Ø�A�AØ˜'’\�\Ø�AØð ˜A ˜I˜IØØ—’˜‘”�Ø ×'Ò'¨Ñ*Ô*Ð*Ð*à'ð "ð "�Ø/Ð/°Ñ4Ô4�Øð "Ø#�C˜‘FØ!�M�M�Mð"ð ×Ò˜W dÑ+Ô+Ð+Ø�4r(   rI   rH   z %s: no Fortran 90 compiler foundz%s: f90 nor f77)rR   z %s: no Fortran 77 compiler foundrJ   rL   )rO   rR   rM   rK   rN   rG   ©NN)r{   Ú
_exe_cacheÚcompiler_typer   Úwarnr#   )r|   r£   r±   ÚctyperR   rO   r    rŸ   s   `     @@r)   Úfind_executableszFCompiler.find_executables  sŒ  øøø€ ð Ô"Ð"Ð"Ð"Ø”Oˆ	ð	ð 	ð 	ð 	ð 	ð	<ð 	<ð 	<ð 	<ð 	<ð
	ð 	ð 	ð 	ð 	ð 	ð 	ð@ Ô"ˆØˆg�nÑ%Ô%ˆØð 
	-Ø�'˜.Ñ)Ô)ˆCØð BÝ”Ð;¸eÑCÑDÔDÐDÐDå&Ð'8¸5Ñ'@ÑAÔAÐAà�'˜.¨cÐ2Ñ2Ô2ˆCØð EÝ”Ð;¸eÑCÑDÔDÐDØˆG�N¨Ð,Ñ,Ô,Ð,àˆ� ¨#Ð.Ñ.Ô.Ð.Øˆ� #¨3Ð/Ñ/Ô/Ð/Øˆ� 3¨CÐ0Ñ0Ô0Ð0Øˆ�
ÑÔÐØˆ�ÑÔÐÐÐr(   c                 ó   — dS )aq  Called at the beginning of customisation. Subclasses should
        override this if they need to set up the executables dictionary.

        Note that self.find_executables() is run afterwards, so the
        self.executables dictionary values can contain <F77> or <F90> as
        the command, which will be replaced by the found F77 or F90
        compiler.
        Nr'   rˆ   s    r)   Úupdate_executableszFCompiler.update_executablesl  s	   € ð 	ˆr(   c                 ó   — g | j         z   S )z+List of flags common to all compiler types.)Ú	pic_flagsrˆ   s    r)   Ú	get_flagszFCompiler.get_flagsw  s   € à�D”NÑ"Ð"r(   c                 óT   — | j                              |d ¦  «        }|€g S |dd …         S )Nr   )rx   r¥   )r|   r‹   r¬   s      r)   Ú_get_command_flagszFCompiler._get_command_flags{  s1   € ØÔ×"Ò" 3¨Ñ-Ô-ˆØˆ;ØˆIØ�1�2�2Œwˆr(   c                 ó,   — |                       d¦  «        S )z"List of Fortran 77 specific flags.rH   ©r¾   rˆ   s    r)   Úget_flags_f77zFCompiler.get_flags_f77�  ó   € à×&Ò& ~Ñ6Ô6Ð6r(   c                 ó,   — |                       d¦  «        S )z"List of Fortran 90 specific flags.rI   rÀ   rˆ   s    r)   Úget_flags_f90zFCompiler.get_flags_f90„  rÂ   r(   c                 ó   — g S )z.List of Fortran 90 free format specific flags.r'   rˆ   s    r)   Úget_flags_freezFCompiler.get_flags_free‡  ó   € àˆ	r(   c                 ó,   — |                       d¦  «        S )z/List of Fortran 90 fixed format specific flags.rJ   rÀ   rˆ   s    r)   Úget_flags_fixzFCompiler.get_flags_fixŠ  rÂ   r(   c                 ó,   — |                       d¦  «        S )z/List of linker flags to build a shared library.rL   rÀ   rˆ   s    r)   Úget_flags_linker_sozFCompiler.get_flags_linker_so�  s   € à×&Ò& {Ñ3Ô3Ð3r(   c                 ó,   — |                       d¦  «        S )z,List of linker flags to build an executable.rM   rÀ   rˆ   s    r)   Úget_flags_linker_exezFCompiler.get_flags_linker_exe�  s   € à×&Ò& |Ñ4Ô4Ð4r(   c                 ó,   — |                       d¦  «        S )zList of archiver flags. rN   rÀ   rˆ   s    r)   Úget_flags_arzFCompiler.get_flags_ar“  s   € à×&Ò& zÑ2Ô2Ð2r(   c                 ó   — g S )z0List of architecture independent compiler flags.r'   rˆ   s    r)   Úget_flags_optzFCompiler.get_flags_opt–  rÇ   r(   c                 ó   — g S )z.List of architecture dependent compiler flags.r'   rˆ   s    r)   Úget_flags_archzFCompiler.get_flags_arch™  rÇ   r(   c                 ó   — g S )z=List of compiler flags to compile with debugging information.r'   rˆ   s    r)   Úget_flags_debugzFCompiler.get_flags_debugœ  rÇ   r(   c                 ó    — | j         dd…         S )zList of compiler libraries.N)Ú	librariesrˆ   s    r)   Úget_librarieszFCompiler.get_libraries¤  s   € àŒ~˜a˜a˜aÔ Ð r(   c                 ó    — | j         dd…         S )z%List of compiler library directories.N)Úlibrary_dirsrˆ   s    r)   Úget_library_dirszFCompiler.get_library_dirs§  s   € àÔ    Ô#Ð#r(   r   c                 óf   — | j         sJ ‚t          j        | ||¬¦  «        }|€t          ¦   «         ‚|S )N)ÚforceÚ	ok_status)r{   r   Úget_versionr#   )r|   rÝ   rÞ   Úversions       r)   rß   zFCompiler.get_version«  s>   € ØÔ"Ð"Ð"Ð"ÝÔ'¨°EÀYÐOÑOÔOˆØˆ?Ý"Ñ$Ô$Ð$Øˆr(   c                 ó„  ‡ ‡‡‡‡‡‡— t          j        d‰ j        j        z  ¦  «         d‰ _        ‰ j                             |¦  «         ‰ j                             |¦  «         ‰ j                             |¦  «         ‰  	                    ¦   «          ‰  
                    ¦   «          ‰ j                             dd¦  «        }‰ j                             d|¦  «        }‰ j                             dd¦  «        }‰ j        j        Š‰ j        j        Šg Šg Šg }g Š‰r+t          j                             ‰¦  «        Š‰ j        j        Š‰r7t          j                             ‰¦  «        Š‰ j        j        Š‰ j        j        }‰ j        j        Š‰r.t          j                             ‰¦  «        Š‰ j        j        ‰z   Šg g g }}}ˆˆˆˆˆˆˆ fd„}	|s |	d|¦  «         |s |	d	|¦  «         |r |	d|¦  «         ‰ j        j        |z   |z   |z   }
‰r‰                      ‰‰z   |
z   ¬
¦  «         ‰r‰                      ‰|z   ‰z   |
z   ¬¦  «         ‰r‰                      ‰‰z   |
z   ¬¦  «         ‰ j        }|�r ‰ j        j        }t2          j                             d¦  «        r_t9          d¬¦  «        }t:          j                             |dd¦  «        }t:          j                             |dd¦  «        }|g|z   d|z   gz   }t2          j                             d¦  «        r^ddl m!}  |d¦  «        }t:          j                             |d¦  «        }t:          j                             |d¦  «        }|g|z   d|z   gz   }‰                      ||z   ¬¦  «         ‰ j"        }|r%‰ j        j"        }‰                      ||z   ¬¦  «         ‰ j        j#        }|r&‰ j        j$        }‰                      |g|z   ¬¦  «         ‰  %                    ‰  &                    ¦   «         ¦  «         ‰  '                    ‰  (                    ¦   «         ¦  «         dS )a¥  Customize Fortran compiler.

        This method gets Fortran compiler specific information from
        (i) class definition, (ii) environment, (iii) distutils config
        files, and (iv) command line (later overrides earlier).

        This method should be always called after constructing a
        compiler instance. But not in __init__ because Distribution
        instance is needed for (iii) and (iv).
        zcustomize %sTr7   Fr8   r9   c                 ó4  •— |                      t          ‰j        | ¦  «        ¦  «         t          ‰d| z   ¦  «        }d‰‰fd‰	‰
fd‰‰ffD ]L\  }}}| ›d|›�}|r=|t          ‰d|z   ¦  «        ur(|                      t          ‰j        |¦  «        ¦  «         ŒMd S )NÚ
get_flags_rO   rR   Ú_)Úextendr¦   rw   )Útagre   Úthis_getr¢   ÚcÚflagvarÚtrO   rQ   rR   rT   rX   Úfixflagsr|   s          €€€€€€€r)   r¼   z&FCompiler.customize.<locals>.get_flagsó  sÇ   ø€ à�LŠL� ¤°Ñ5Ô5Ñ6Ô6Ð6Ý˜t \°CÑ%7Ñ8Ô8ˆHØ&+¨S°(Ð%;Ø&+¨S°(Ð%;Ø&+¨S°(Ð%;ð%=ð ?ð ?Ñ ��a˜ð  #˜s˜s D DÐ)�Øð ?˜­°°|ÀaÑ7GÑ)HÔ)HÐHÐHØ—N’N¥7¨4¬>¸1Ñ#=Ô#=Ñ>Ô>Ð>øð?ð ?r(   rY   r]   )rH   )rI   )rJ   Úaixr   )Ústandard_libÚconfigÚ	ld_so_aixz
python.expz-bI:Úos400r   )Úget_config_varÚLIBPL)rL   )rM   )rN   N))r   Úinfor‚   r$   r{   rs   Úuse_distributionrv   rw   r¹   r·   r¥   rH   rI   r   ÚNativeParserÚsplitrO   rR   rU   rJ   rX   re   r˜   rL   ÚsysÚplatformÚ
startswithr   ÚosÚpathÚjoinÚdistutils.sysconfigrñ   rM   rN   rE   Úset_library_dirsrÛ   Úset_librariesrØ   )r|   Údistr7   r8   r9   rW   ÚoflagsÚaflagsÚdflagsr¼   rg   rL   Úlinker_so_flagsÚ
python_librï   Ú
python_exprñ   Úpython_configrM   Úlinker_exe_flagsrE   rk   rO   rQ   rR   rT   rX   rë   s   `                     @@@@@@r)   Ú	customizezFCompiler.customize·  s§  øøøøøøø€ õ 	Œ� 4¤>Ô#:Ñ;Ñ<Ô<Ð<à"ˆÔàÔ×,Ò,¨TÑ2Ô2Ð2ØÔ×*Ò*¨4Ñ0Ô0Ð0ØŒ×'Ò'¨Ñ-Ô-Ð-à×ÒÑ!Ô!Ð!ð 	×ÒÑÔÐàÔ#×'Ò'¨°Ñ7Ô7ˆØÔ$×(Ò(¨°5Ñ9Ô9ˆØÔ#×'Ò'¨°Ñ7Ô7ˆàÔÔ,ˆØÔÔ,ˆàˆØˆØˆ	Øˆàð 	*ÝÔ+×1Ò1°#Ñ6Ô6ˆCØ”~Ô)ˆHØð 	,ÝÔ+×1Ò1°#Ñ6Ô6ˆCØ”~Ô)ˆHØœÔ+ˆIàÔÔ,ˆð ð 	5ÝÔ+×1Ò1°#Ñ6Ô6ˆCØ”~Ô)¨HÑ4ˆHà!# R¨˜�ˆð		?ð 		?ð 		?ð 		?ð 		?ð 		?ð 		?ð 		?ð 		?ð 		?ð 		?ð ð 	*ØˆI�e˜VÑ$Ô$Ð$Øð *Ø�	˜& &Ñ)Ô)Ð)Øð 	'ØˆI�g˜vÑ&Ô&Ð&à”Ô%¨Ñ.°Ñ7¸&Ñ@ˆàð 	@Ø×Ò¨3¨x©<¸Ñ+>ÐÑ?Ô?Ð?Øð 	JØ×Ò¨3¨y©=¸Ñ+AÀ&Ñ+HÐÑIÔIÐIØð 	@Ø×Ò¨3¨x©<¸Ñ+>ÐÑ?Ô?Ð?ð ”Nˆ	Øñ 	CØ"œnÔ6ˆOÝŒ|×&Ò& uÑ-Ô-ð JÝ+¸Ð;Ñ;Ô;�
ÝœGŸLšL¨°X¸{ÑKÔK�	ÝœWŸ\š\¨*°hÀÑMÔM�
Ø&˜K¨)Ñ3°v¸jÑ7HÐ6IÑI�	ÝŒ|×&Ò& wÑ/Ô/ð JØ>Ð>Ð>Ð>Ð>Ð>Ø . ¨wÑ 7Ô 7�ÝœGŸLšL¨¸ÑDÔD�	ÝœWŸ\š\¨-¸ÑFÔF�
Ø&˜K¨)Ñ3°v¸jÑ7HÐ6IÑI�	Ø×Ò¨	°/Ñ(AÐÑBÔBÐBà”_ˆ
Øð 	FØ#œ~Ô8ÐØ×Ò¨Ð4DÑ)DÐÑEÔEÐEàÔÔ'ˆØð 	5Ø”nÔ'ˆGØ×Ò¨ t¨G¡|ÐÑ4Ô4Ð4à×Ò˜d×3Ò3Ñ5Ô5Ñ6Ô6Ð6Ø×Ò˜4×-Ò-Ñ/Ô/Ñ0Ô0Ð0Ð0Ð0r(   c           	      óÚ  — g }t          | j                             ¦   «         ¦  «        g d¢z   D ]J}t          | |¦  «        r8t	          | |¦  «        }|                     |ddt          |¦  «        z   f¦  «         ŒK|                     ¦   «          t          |¦  «        }| 	                    d| j
        j        z  ¦  «        D ],}|dd…         dk    rd|dd…         z   }t          |¦  «         Œ-dS )z0Print out the attributes of a compiler instance.)rà   r×   rÚ   Úobject_switchÚcompile_switchNz= z%s instance properties:é   z  --z  )Úlistrx   ÚkeysÚhasattrr¦   rª   ÚreprÚsortr	   Úgenerate_helpr‚   r$   Úprint)r|   Úpropsr‹   r—   Úpretty_printerÚls         r)   Údump_propertieszFCompiler.dump_properties,  s  € àˆÝ˜Ô(×-Ò-Ñ/Ô/Ñ0Ô0ð4ð 4ð 4ñ4ð 	8ð 	8ˆCõ �t˜SÑ!Ô!ð 8Ý˜D #Ñ&Ô&�Ø—’˜c 4¨­d°1©g¬g©Ð6Ñ7Ô7Ð7øØ�
Š
‰Œˆå$ UÑ+Ô+ˆØ×-Ò-Ð.GØ15´Ô1Hñ/Jñ Kô Kð 	ð 	ˆAà��!�Œu�fŠ}ˆ}Ø˜1˜Q˜R˜Rœ5‘L�Ý�!‰HŒHˆHˆHð		ð 	r(   c                 óž  — i }t          |¦  «        j                             ¦   «         t          v r1t	          |¦  «        s"d}| j        }	t          |¦  «        }| j        pg }
nvt          |¦  «        r4d}| j	        }	|	€t          d| j        j        ›d|›�¦  «        ‚| j        pg }
n3d}| j        }	|	€t          d| j        j        ›d|›�¦  «        ‚| j        pg }
| j        d         d	k    r| j                             ¦   «         |g}n| j                             ¦   «         |z   g}| j                             ¦   «         sJ ‚| j        |g}|
r5t%          j        d
|dd…         ›dd	                     |
¦  «        ›�¦  «         |                     | j        g ¦  «        }|r*t%          j        dd	                     |¦  «        z  ¦  «         |	|z   |z   |z   |z   |z   |
z   }t.          j                             |	d         ¦  «        |z   ›d|›�}	 |                      ||¬¦  «         dS # t          $ r$}t7          |¦  «        }t9          |¦  «        d‚d}~ww xY w)zCompile 'src' to product 'obj'.z:f77z:f90Nzf90 not supported by z needed for z:fixzf90 (fixed) not supported by éÿÿÿÿú zextra r   z
 options: z%using compile options from source: %rr   z: )Údisplay)r   ÚsuffixÚlowerÚFORTRAN_COMMON_FIXED_EXTENSIONSÚhas_f90_headerrH   Úget_f77flagsÚextra_f77_compile_argsÚis_free_formatrI   r   r‚   r$   Úextra_f90_compile_argsrJ   r  Ústripr  r   ró   rü   r¥   r´   rú   rû   ÚbasenameÚspawnÚstrr   )r|   r…   ÚsrcÚextÚcc_argsÚextra_postargsÚpp_optsÚ	src_flagsÚflavorÚcompilerÚextra_compile_argsÚo_argsÚs_argsÚextra_flagsÚcommandr  r   Úmsgs                     r)   Ú_compilezFCompiler._compile@  sÎ  € àˆ	Ý�‰9Œ9Ô×!Ò!Ñ#Ô#Õ'FÐFÐFÝ! #Ñ&Ô&ð GàˆFØÔ(ˆHÝ$ SÑ)Ô)ˆIØ!%Ô!<Ð!BÀÐÐÝ˜CÑ Ô ð 	CØˆFØÔ(ˆHØÐÝ(Ð(ØœÔ0Ð0Ð0°#°#ð*7ñ 8ô 8ð 8à!%Ô!<Ð!BÀÐÐàˆFØÔ(ˆHØÐÝ(Ð(ØœÔ0Ð0Ð0°#°#ð*7ñ 8ô 8ð 8à!%Ô!<Ð!BÀÐØÔ˜bÔ! 3Ò&Ð&ØÔ(×.Ò.Ñ0Ô0°#Ð6ˆFˆFàÔ(×.Ò.Ñ0Ô0°Ñ4Ð5ˆFàÔ"×(Ò(Ñ*Ô*Ð*Ð*Ð*ØÔ% sÐ+ˆàð 	CÝŒHˆHØ˜q˜r˜rœ
˜
˜
 C§H¢HÐ-?Ñ$@Ô$@Ð$@ðBñ Cô Cð Cð  —m’m DÔ$6¸Ñ;Ô;ˆØð 	.ÝŒHÐ<Ø—x’x Ñ,Ô,ñ-ñ .ô .ð .ð ˜WÑ$ {Ñ2°VÑ;¸fÑDØ"ñ#Ø%7ñ8ˆõ !œg×.Ò.¨x¸¬{Ñ;Ô;¸fÑDÐDÐDØ!˜cð#ˆð	.Ø�JŠJ�w¨ˆJÑ0Ô0Ð0Ð0Ð0øÝ!ð 	.ð 	.ð 	.Ý�a‘&”&ˆCÝ˜sÑ#Ô#¨Ð-øøøøð	.øøøs   ÈH È
IÈ(IÉIc                 ó  — g }| j         �p| j         d         dk    r/|                     | j                              ¦   «         |g¦  «         n\|                     | j                              ¦   «         |z   ¦  «         n,t	          d|z  ¦  «         t	          d| j        j        ¦  «         | j        �(|g|z   D ] }|                     | j        ›|›�¦  «         Œ!n,t	          d|z  ¦  «         t	          d| j        j        ¦  «         |S )Nr  r  z'XXX: module_build_dir=%r option ignoredzXXX: Fix module_dir_switch for z"XXX: module_dirs=%r option ignoredz#XXX: Fix module_include_switch for )Úmodule_dir_switchrå   r%  rª   r  r‚   r$   Úmodule_include_switch)r|   Úmodule_dirsÚmodule_build_dirÚoptionsÚds        r)   Úmodule_optionszFCompiler.module_optionss  s  € ØˆØÔ!Ð-ØÔ% bÔ)¨3Ò.Ð.Ø—’ Ô 6× <Ò <Ñ >Ô >Ð@PÐQÑRÔRÐRÐRà—’˜tÔ5×;Ò;Ñ=Ô=Ð>NÑNÑOÔOÐOÐOåÐ;Ð?OÑPÑQÔQÐQÝÐ3°T´^Ô5LÑMÔMÐMØÔ%Ð1Ø&Ð'¨Ñ3ð Ið I�Ø—’¨Ô)CÐ)CÀQÀQÐGÑHÔHÐHÐHðIõ Ð6¸+ÑFÑGÔGÐGÝÐ7¸¼Ô9PÑQÔQÐQØˆr(   c                 ó   — d|z   S )Nz-lr'   )r|   Úlibs     r)   Úlibrary_optionzFCompiler.library_option…  ó   € Ø�c‰zÐr(   c                 ó   — d|z   S )Nz-Lr'   )r|   Údirs     r)   Úlibrary_dir_optionzFCompiler.library_dir_option‡  rC  r(   c                 ó  — |                       ||¦  «        \  }}|                      |||¦  «        \  }}}t          | |||¦  «        }t          |¦  «        r!t          j                             ||¦  «        }n|�t          d¦  «        ‚|                      ||¦  «        �rU| j	        d         dk    r| j	         
                    ¦   «         |g}n| j	         
                    ¦   «         |z   g}t          | j        ¦  «        r|| j        gz   }n
|| j        z   }||z   |z   }|	rdg|d d…<   |
r|
|d d…<   |r|                     |¦  «         |                      t          j                             |¦  «        ¦  «         |t          j        k    r| j        d d …         }n| j        d d …         }||z   }	 |                      |¦  «         d S # t(          $ r$}t+          |¦  «        }t-          |¦  «        d ‚d }~ww xY wt/          j        d|¦  «         d S )Nz%'output_dir' must be a string or Noner  r  z-gr   zskipping %s (up-to-date))Ú_fix_object_argsÚ_fix_lib_argsr   r   rú   rû   rü   Ú	TypeErrorÚ
_need_linkÚlibrary_switchr%  Úobjectsrå   ÚmkpathÚdirnamer   Ú
EXECUTABLErM   rL   r'  r   r(  r   r   r9   )r|   Útarget_descrM  Úoutput_filenameÚ
output_dirr×   rÚ   Úruntime_library_dirsÚexport_symbolsr9   Úextra_preargsr,  Ú
build_tempÚtarget_langÚlib_optsr2  Úld_argsÚlinkerr5  r   r6  s                        r)   ÚlinkzFCompiler.linkŠ  sF  € ð
 #×3Ò3°G¸ZÑHÔHÑˆ�à×Ò˜y¨,Ð8LÑMÔMñ 	6ˆ	�<Ð!5õ # 4¨Ð7KØ#,ñ.ô .ˆå�ZÑ Ô ð 	EÝ œgŸlšl¨:°ÑGÔGˆOˆOØÐ#ÝÐCÑDÔDÐDà�?Š?˜7 OÑ4Ô4ñ 	CØÔ" 2Ô&¨Ò+Ð+ØÔ-×3Ò3Ñ5Ô5°ÐG��àÔ-×3Ò3Ñ5Ô5°oÑEÐF�å˜œÑ&Ô&ð 1Ø! T¤\ NÑ2��à! D¤LÑ0�Ø Ñ(¨6Ñ1ˆGØð %Ø#˜f�˜˜˜‘Øð ,Ø+�˜˜˜‘Øð /Ø—’˜~Ñ.Ô.Ð.Ø�KŠK�œŸš¨Ñ8Ô8Ñ9Ô9Ð9Ø�iÔ2Ò2Ð2Øœ¨¨¨Ô+��àœ¨¨¨Ô*�Ø˜wÑ&ˆGð/Ø—
’
˜7Ñ#Ô#Ð#Ð#Ð#øÝ%ð /ð /ð /Ý˜!‘f”f�Ý ‘n”n¨$Ð.øøøøð/øøøõ ŒIÐ0°/ÑBÔBÐBÐBÐBs   Æ,G Ç
G1ÇG,Ç,G1c                 óš  — |€d S t          |¦  «        r¯|                     d¦  «        r$|dd …         }t          | |¦  «        } |¦   «         S |                     d¦  «        r#|dd …         }| j        |         }|r|d         S d S |                     d¦  «        r'|dd …         }t          | d|z   ¦  «        } |¦   «         S d S  |¦   «         S )	Nzself.é   zexe.r  r   zflags.é   rã   )r   rù   r¦   rx   )r|   r¢   Ú	hook_nameÚhookÚvars        r)   ru   zFCompiler._environment_hook¹  sú   € ØÐØ�4Ý�YÑÔð 	Ø×#Ò# GÑ,Ô,ð Ø% a b bœM�	Ý˜t YÑ/Ô/�Ø�t‘v”v�Ø×%Ò% fÑ-Ô-ð 
Ø% a b bœM�	ØÔ& yÔ1�Øð  Ø˜qœ6�Mà˜4Ø×%Ò% hÑ/Ô/ð Ø% a b bœM�	Ý˜t \°IÑ%=Ñ>Ô>�Ø�t‘v”v�ðð ð
 �9‘;”;Ðr(   c                 ó   — dS )zc
        Check if the given C compiler can link objects produced by
        this compiler.
        Tr'   )r|   Ú	ccompilers     r)   Úcan_ccompiler_linkzFCompiler.can_ccompiler_linkÏ  s	   € ð
 ˆtr(   c                 ó   — t          ¦   «         ‚)a¨  
        Convert a set of object files that are not compatible with the default
        linker, to a file that is compatible.

        Parameters
        ----------
        objects : list
            List of object files to include.
        output_dir : str
            Output directory to place generated object files.
        extra_dll_dir : str
            Output directory to place extra DLL files that need to be
            included on Windows.

        Returns
        -------
        converted_objects : list of str
             List of converted object files.
             Note that the number of output files is not necessarily
             the same as inputs.

        )ÚNotImplementedError)r|   rM  rS  Úextra_dll_dirs       r)   Úwrap_unlinkable_objectsz!FCompiler.wrap_unlinkable_objectsÖ  s   € õ. "Ñ#Ô#Ð#r(   r+   )
NNNNNr   NNNN)Ur$   r%   r&   Ú__doc__r   r1   rs   rv   r.   rw   Úlanguage_mapÚlanguage_orderr´   Úcompiler_aliasesÚversion_patternr§   rx   Úsuggested_f90_compilerr  r  rL  r9  r:  r»   Úsrc_extensionsÚobj_extensionr   Úshared_lib_extensionÚstatic_lib_extensionÚstatic_lib_formatÚshared_lib_formatÚexe_extensionr³   rz   Ú
c_compilerr"  r$  rr   r†   ry   rŽ   rK   rH   rI   rJ   rL   rM   rN   rG   r“   r˜   r�   r·   r¹   r¼   r¾   rÁ   rÄ   rÆ   rÉ   rË   rÍ   rÏ   rÑ   rÓ   rÕ   Úget_flags_opt_f77Úget_flags_opt_f90Úget_flags_arch_f77Úget_flags_arch_f90Úget_flags_debug_f77Úget_flags_debug_f90rØ   rÛ   rß   r	  r  r7  r?  rB  rF  r\  ru   re  ri  r'   r(   r)   r   r   >   sP  € € € € € ðð ðP 'Ð&Ø%Ø�t˜W h°Ð6Ø˜˜h¨°%Ð8Ø�t˜W h°Ð6Ø˜˜y¨(°EÐ:ðñ ô €Nð %Ð$Ø%ØJØJØJØBØJØ@Ø2Ø8ð
ñ 
ô 
€Lð "Ð!ð ð ð Ø%˜+ðà˜J¨
°H¸dÐCÐCðð ˜J¨
°H¸dÐCÐCðð ˜k¨;¸À$ÐGÐGð	ð
 ˜D $¨°%Ð8Ð8ðð ˜F E¨8°TÐ:Ð:ðð # D¨$°¸%Ð@Ð@ðð # D¨$°¸%Ð@Ð@ðð ˜g v¨x¸Ð?Ð?ðð % d¨D°(¸EÐBÐBðð % d¨D°(¸EÐBÐBðð  ¨(°H¸dÐCÐCðð '¨¨d°H¸eÐDÐDðð '¨¨d°H¸eÐDÐDðð " 8¨X°xÀÐFÐFðð  '¨	°9¸hÈÐMÐMð!ð" )¨)°YÀÈ$ÐOÐOð#ð$ ˜) Y°¸$Ð?Ð?ð%€Ið*  Ø!ØØ!Ø!Ø!Ø!Ø!ðð €Lð ˜U�^€Nð
 €MØÐØ€OàÐà˜t�}Ø˜Ø˜Ø Ð)Ø˜YÐ'Ø�gØ˜5�MØð	
ð 	
€Kð "Ðà€NØ€Mð €Nð
 Ðð !Ðà€IàYÐYÐY€NØ€Mà3Ð3Ñ5Ô5ÐØÐØ!ÐØÐØ€Mà€Jð"ð "ð "Ðð €Jð  ÐØÐð$ð $ð $ðð ð ðð ð ð#ð #ð #ð
 $Ð# MÑ2Ô2€KØ$Ð$ ^Ñ4Ô4€LØ$Ð$ ^Ñ4Ô4€LØ$Ð$ ^Ñ4Ô4€LØ!Ð! +Ñ.Ô.€IØ"Ð" <Ñ0Ô0€JØ Ð  Ñ,Ô,€HØÐ˜xÑ(Ô(€Fð%ð %ð %ð#ð #ð #ð&ð &ð &ðMð Mð Mð^	ð 	ð 	ð#ð #ð #ðð ð ð7ð 7ð 7ð7ð 7ð 7ðð ð ð7ð 7ð 7ð4ð 4ð 4ð5ð 5ð 5ð3ð 3ð 3ðð ð ðð ð ðð ð ð -:Ð9ÐÐ)Ø.<Ð<ÐÐ+Ø0?Ð?ÐÐ-ð!ð !ð !ð$ð $ð $ð !&°!°ð ð ð ð ðs1ð s1ð s1ð s1ðjð ð ð(1.ð 1.ð 1.ðfð ð ð$ð ð ðð ð ð :>Ø59Ø9=Ø?Cð	-Cð -Cð -Cð -Cð^ð ð ð,ð ð ð$ð $ð $ð $ð $r(   r   )
)Úwin32)
ÚgnuÚintelvÚabsoftÚcompaqvÚintelevÚgnu95Úg95ÚintelvemÚintelemÚflang)zcygwin.*)r  r€  r�  r‚  rƒ  r„  r…  )zlinux.*)Úarmr„  ÚintelÚlaheyÚpgÚnvr�  ÚnagÚvastÚcompaqÚinteler‡  r  r…  Úpathf95ÚnagforÚfujitsu)zdarwin.*)	r„  rŽ  r“  r�  ÚibmrŠ  r  r…  rŒ  )zsunos.*)Úsunr  r„  r…  )zirix.*)Úmipsr  r„  )zaix.*)r•  r  r„  )Úposix©r  r„  )Úntr™  )Úmac)r„  r  rŒ  c                  óÊ  — ddl m }  t          �dS t          j                             t          j                             t          ¦  «        d¦  «        }i ai a | |¦  «        D �] }t          j                             t          j         	                    |¦  «        ¦  «        \  }}d|z   }t          |¦  «         t          j        |         }t          |d¦  «        rˆ|j        D ]€}t          ||¦  «        }|j        ||j        f}|t          |j        <   |j        D ]H}	|	t          v r3t'          d|	›d|j        ›d	t          |	         d
         j        ›�¦  «        ‚|t          |	<   ŒIŒ��ŒdS )zcCache all the FCompiler classes found in modules in the
    numpy.distutils.fcompiler package.
    r   )ÚglobNz*.pyznumpy.distutils.fcompiler.Ú	compilerszalias z defined for both z and r   )r�  Úfcompiler_classrú   rû   rü   rO  Ú__file__Úfcompiler_aliasesÚsplitextr&  Ú
__import__r÷   Úmodulesr  rž  r¦   r´   Údescriptionrm  rš   r$   )
r�  ÚpysÚfnameÚmodule_namer*  ÚmoduleÚcnameÚklassÚdescÚaliass
             r)   Úload_all_fcompiler_classesr®    sƒ  € ð ÐÐÐÐÐåÐ"ØˆÝ
Œ'�,Š,•r”w—’¥xÑ0Ô0°&Ñ
9Ô
9€CØ€OØÐØ��c‘”ð 4ñ 4ˆÝœ7×+Ò+­B¬G×,<Ò,<¸UÑ,CÔ,CÑDÔDÑˆ�SØ2°[Ñ@ˆÝ�KÑ Ô Ð Ý”˜[Ô)ˆÝ�6˜;Ñ'Ô'ð 
	4ØÔ)ð 	4ð 	4�Ý ¨Ñ.Ô.�ØÔ+¨U°EÔ4EÐF�Ø7;• Ô 3Ñ4Ø"Ô3ð 4ð 4�EØÕ 1Ð1Ð1Ý(˜jØ,1¨E¨E°5´>°>°>Ý,=¸eÔ,DÀQÔ,GÔ,PÐ,Pð*Rñ Sô Sð Sð 04Õ% eÑ,Ð,ð4ùð4ð 4r(   Fc                 ór  — ddl m}  |d¬¦  «        }| D �] }d }	 t          |||¬¦  «        }	|	                     |¦  «         |	                     ¦   «         }|rl|	j        €ed }|	j        }
|
rZt          j        d|›d|
›d�¦  «         t          ||
|¬¦  «        }	|	                     |¦  «         |	                     ¦   «         }|�|
}|r#|	j        €t          d	|	j
        j        z  ¦  «        ‚nE# t          $ r t          j        d
|¦  «         Y n$t          $ r t          j        d|¦  «         Y nw xY w|�|c S �Œ"d S )Nr   )Úget_distributionT)Úalways)Úplatr0  rw  zTrying z compiler as suggested by z compiler for f90 support.z2%s does not support compiling f90 codes, skipping.zH_find_existing_fcompiler: compiler_type='%s' raised DistutilsModuleErrorz6_find_existing_fcompiler: compiler_type='%s' not found)Únumpy.distutils.corer°  r   r	  rß   rI   ro  r   rµ   rš   r‚   r$   r
   r9   r#   )Úcompiler_typesÚosnamerø   Ú
requiref90rw  r°  r   r´   r—   rè   Únew_compilers              r)   Ú_find_existing_fcompilerr¸  #  sÐ  € ð 6Ð5Ð5Ð5Ð5Ð5ØÐ 4Ð(Ñ(Ô(€DØ'ð !ñ !ˆØˆð	_Ý 8°mØ)3ð5ñ 5ô 5ˆAà�KŠK˜ÑÔÐØ—’‘”ˆAØð 5˜aœnÐ4Ø�Ø Ô7�Øð 	5Ý”H�HØ<I¸M¸MØ<H¸L¸LðJñ Kô Kð Kõ &¨8¸lØ1;ð=ñ =ô =�Aà—K’K Ñ%Ô%Ð%ØŸš™œ�AØ�}Ø(4˜Øð G˜aœnÐ4Ý ð "-Ø01´Ô0Dñ"Fñ Gô Gð Gøøå#ð 	qð 	qð 	qÝŒIÐ`ÐboÑpÔpÐpÐpÐpÝð 	_ð 	_ð 	_ÝŒIÐNÐP]Ñ^Ô^Ð^Ð^Ð^ð	_øøøàˆ=Ø Ð Ð Ð ñ àˆ4s   ›CC*Ã*D,ÄD,Ä+D,c                 ó  — | €t           j        } |€t          j        }g }t          D ]M\  }}t          j        ||¦  «        st          j        || ¦  «        r|D ]}||vr|                     |¦  «         ŒŒN|s|                     d¦  «         |S )Nr  )rú   r¢   r÷   rø   Ú_default_compilersÚreÚmatchrª   )rµ  rø   Úmatching_compiler_typesÚpatternr´   Úcts         r)   Ú!available_fcompilers_for_platformrÀ  H  s¯   € Ø€~Ý”ˆØÐÝ”<ˆØ ÐÝ"4ð 7ð 7Ñˆ�ÝŒ8�G˜XÑ&Ô&ð 	7­"¬(°7¸FÑ*CÔ*Cð 	7Ø#ð 7ð 7�ØÐ4Ð4Ð4Ø+×2Ò2°2Ñ6Ô6Ð6øøØ"ð .Ø×&Ò& uÑ-Ô-Ð-Ø"Ð"r(   c                 óx   — t          | |¦  «        }t          j        d|¦  «         t          || |||¬¦  «        }|S )zIDetermine the default Fortran compiler to use for the given
    platform.z+get_default_fcompiler: matching types: '%s')rµ  rø   r¶  rw  )rÀ  r   ró   r¸  )rµ  rø   r¶  rw  r½  r´   s         r)   Úget_default_fcompilerrÂ  W  sd   € õ @ÀØ@HñJô JÐå„HÐ:Ø$ñ&ô &ð &å-Ð.EØ5;Ø7?Ø9CØ9Cð	Eñ Eô E€Mð
 Ðr(   c                 óü  — | |f}|t           v rdS t          ¦   «          | €t          j        } |€t	          | ||¬¦  «        }|t
          v rt
          |         \  }}	}
nŒ|t          v rt          |         \  }}	}
nqd| z  }|�:|d|z  z   }|dd                     t
                               ¦   «         ¦  «        z  z   }t          j
        |¦  «         t                                |¦  «         dS  |	|||¬¦  «        }||_        |S )zhGenerate an instance of some FCompiler subclass for the supplied
    platform/compiler combination.
    N)r¶  rw  z7don't know how to compile Fortran code on platform '%s'z with '%s' compiler.z Supported compilers are: %s)ú,)r:   Údry_runrÝ   )Úfailed_fcompilersr®  rú   r¢   rÂ  rŸ  r¡  rü   r  r   rµ   r©   rw  )r²  r0  r:   rÅ  rÝ   r¶  rw  Úfcompiler_keyr¨  r«  Úlong_descriptionr6  s               r)   r   r   i  s2  € ð ˜8Ð$€MØÕ)Ð)Ð)ØˆtåÑ Ô Ð Ø€|ÝŒwˆØÐÝ(¨¸*Ø4>ð@ñ @ô @ˆà•?Ð"Ð"Ý/>¸xÔ/HÑ,ˆ�UÐ,Ð,Ø	Õ&Ð	&Ð	&Ý/@ÀÔ/JÑ,ˆ�UÐ,Ð,àGÈ$ÑNˆØÐØÐ.°Ñ9Ñ9ˆCØÐ7Ø—X’X�o×2Ò2Ñ4Ô4Ñ5Ô5ñ7ñ 7ˆCåŒ�‰ŒˆÝ×Ò˜mÑ,Ô,Ð,Øˆtàˆu˜W¨g¸UÐCÑCÔC€HØ$€HÔØ€Or(   c                 óJ  — | €Åddl m} ddlm}  |¦   «         } t          j                             t          j        d         ¦  «        | _	        dgt          j        dd…         z   | _
        	 | j
                             d¦  «         n# t          $ r Y nw xY w|| j        d<   |                      ¦   «          |                      ¦   «          g }g }g }t           st#          ¦   «          t%          ¦   «         }|D �]&}d}t'          j        d¦  «         	 t+          || j        ¬	¦  «        }	|	                     | ¦  «         |	                     ¦   «         }nW# t2          t4          f$ rC}
t'          j        d
|›d�¦  «         t'          j        t9          |
¦  «        ¦  «         Y d}
~
nd}
~
ww xY w|€-|                     d|z   dt           |         d         f¦  «         Œà|	                     ¦   «          |                     d|z   dt           |         d         d|z  z   f¦  «         �Œ(t?          tA          t            !                    ¦   «         ¦  «        tA          |¦  «        z
  ¦  «        }d„ |D ¦   «         }| "                    ¦   «          | "                    ¦   «          | "                    ¦   «          tG          |¦  «        }| $                    d¦  «         tG          |¦  «        }| $                    d¦  «         |r$tG          |¦  «        }| $                    d¦  «         tK          d¦  «         dS )zbPrint list of available compilers (used by the "--help-fcompiler"
    option to "config_fc").
    Nr   )ÚDistribution)r6   r6   r   z--help-fcompileréþÿÿÿ)r0  r:   zshow_fcompilers: z
 not foundú
fcompiler=é   z (%s)c                 ó@   — g | ]}d |z   dt           |         d         f‘ŒS )rÌ  NrÍ  )rŸ  )Ú.0Úfcs     r)   ú
<listcomp>z#show_fcompilers.<locals>.<listcomp>»  s=   € ð ,ð ,ð ,Øð " "‘_ d­O¸BÔ,?ÀÔ,BÐCð ,ð ,ð ,r(   zFortran compilers found:z5Compilers available for this platform, but not found:z)Compilers not available on this platform:z>For compiler details, run 'config_fc --verbose' setup command.)&Údistutils.distrÊ  Ú'numpy.distutils.command.config_compilerr6   rú   rû   r&  r÷   ÚargvÚscript_nameÚscript_argsÚremoverš   ÚcmdclassÚparse_config_filesÚparse_command_linerŸ  r®  rÀ  r   Úset_verbosityr   r:   r	  rß   r
   r#   r9   r  rª   r  r  r¨   r  r  r	   Ú
print_helpr  )r   rÊ  r6   rž  Úcompilers_naÚcompilers_niÚplatform_compilersr0  r—   rè   r   r  s               r)   r   r   �  s|  € ð €|Ø/Ð/Ð/Ð/Ð/Ð/ØEÐEÐEÐEÐEÐEØˆ|‰~Œ~ˆÝœ7×+Ò+­C¬H°Q¬KÑ8Ô8ˆÔØ'˜=­3¬8°A°B°B¬<Ñ7ˆÔð	ØÔ×#Ò#Ð$6Ñ7Ô7Ð7Ð7øÝð 	ð 	ð 	ØˆDð	øøøà%.ˆŒ�kÑ"Ø×ÒÑ!Ô!Ð!Ø×ÒÑ!Ô!Ð!Ø€IØ€LØ€LÝð %Ý"Ñ$Ô$Ð$Ý:Ñ<Ô<ÐØ&ð Kñ KˆØˆÝÔ˜"ÑÔÐð	Ý x¸¼ÐFÑFÔFˆAØ�KŠK˜ÑÔÐØ—’‘”ˆAˆAøÝ$Õ&6Ð7ð 	ð 	ð 	ÝŒIˆI¸¸¸ÐCÑDÔDÐDÝŒI•d˜1‘g”gÑÔÐÐÐÐÐÐøøøøð	øøøð ˆ9Ø×Ò ¨hÑ!6¸Ý-¨hÔ7¸Ô:ð!<ñ =ô =ð =ð =ð ×ÒÑÔÐØ×Ò˜l¨8Ñ3°TÝ-¨hÔ7¸Ô:¸WÀq¹[ÑHðJñ Kô Kð Kñ Kõ ��O×0Ò0Ñ2Ô2Ñ3Ô3µcÐ:LÑ6MÔ6MÑMÑNÔN€Lð,ð ,Ø*ð,ñ ,ô ,€Lð ‡N‚NÑÔÐØ×ÒÑÔÐØ×ÒÑÔÐÝ  Ñ+Ô+€NØ×ÒÐ8Ñ9Ô9Ð9Ý  Ñ.Ô.€NØ×Òð 9ñ :ô :ð :àð OÝ$ \Ñ2Ô2ˆØ×!Ò!Ð"MÑNÔNÐNÝ	Ð
JÑKÔKÐKÐKÐKs*   Á+B Â
BÂBÄ?EÅF!Å9FÆF!c                  óŽ   — t          d¬¦  «        \  } }|                      d¦  «         |                      ¦   «          |d d…         S )Nr!   )r  z#      subroutine dummy()
      end
rË  )r   ÚwriteÚclose)Úfor¢   s     r)   r   r   Ì  sD   € Ý TÐ*Ñ*Ô*�H€BˆØ‡H‚HÐ4Ñ5Ô5Ð5Ø‡H‚H�J„J€JØ���Œ9Ðr(   z-\*-\s*fortran\s*-\*-z-\*-\s*f90\s*-\*-z-\*-\s*fix\s*-\*-z[^c*!]\s*[^\s\d\t]c                 óî  — d}t          | d¬¦  «        5 }|                     ¦   «         }d}t          |¦  «        st          |¦  «        rd}nt	          |¦  «        rd}d}|dk    ry|rw|                     ¦   «         }|rE|d         dk    r9|dz  }|d         dk    rt          |dd	…         ¦  «        s|d
d…         dk    rd}n|                     ¦   «         }|dk    r|°wddd¦  «         n# 1 swxY w Y   |S )z(Check if file is in free format Fortran.r   Úlatin1©Úencodingi'  r   ú!ú	Nr^  r  ú&)ÚopenÚreadlineÚ_has_f_headerÚ_has_fix_headerÚ_has_f90_headerÚrstripÚ_free_f90_start)ÚfileÚresultÚfÚlineÚns        r)   r#  r#  Ø  sS  € ð €FÝ	ˆd˜XÐ	&Ñ	&Ô	&ð  ¨!Ø�zŠz‰|Œ|ˆØˆÝ˜ÑÔð 	¥/°$Ñ"7Ô"7ð 	ØˆAˆAÝ˜TÑ"Ô"ð 	ØˆAØˆFØ�Šcˆc�dˆcØ—;’;‘=”=ˆDØð ˜˜Qœ š˜Ø�Q‘�Ø˜”G˜T’M�M¥o°d¸2¸A¸2´hÑ&?Ô&?�MÀDÈÈÈÄIÈsÂNÀNØ�FØØ—:’:‘<”<ˆDð �Šcˆc�dˆcð ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  ð  €Ms   ”C
C*Ã*C.Ã1C.c                 ó¸   — t          | d¬¦  «        5 }|                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   t          |¦  «        pt          |¦  «        S )Nrå  ræ  )rë  rì  rï  rî  )r)  rô  rõ  s      r)   r   r   ï  s�   € Ý	ˆc˜HÐ	%Ñ	%Ô	%ð ¨Ø�zŠz‰|Œ|ˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å˜4Ñ Ô Ð9¥O°DÑ$9Ô$9Ð9s   ’3³7º7z=(c|)f77flags\s*\(\s*(?P<fcname>\w+)\s*\)\s*=\s*(?P<fflags>.*)c                 ó~  — i }t          | d¬¦  «        5 }d}|D ]Œ}|dz  }|dk    r n~t                               |¦  «        }|sŒ,|                     d¦  «                             ¦   «         }|                     d¦  «                             ¦   «         }t          |¦  «        ||<   Œ�ddd¦  «         n# 1 swxY w Y   |S )	z¯
    Search the first 20 lines of fortran 77 code for line pattern
      `CF77FLAGS(<fcompiler type>)=<f77 flags>`
    Return a dictionary {<fcompiler type>:<f77 flags>}.
    rå  ræ  r   r   é   Úfcnamerg   N)rë  Ú_f77flags_rer¼  Úgroupr%  r   )r)  re   rô  Úirõ  Úmrú  rg   s           r)   r!  r!  õ  s  € ð €EÝ	ˆc˜HÐ	%Ñ	%Ô	%ð 	1¨ØˆØð 	1ð 	1ˆDØ�‰FˆAØ�Štˆt�U�UÝ×"Ò" 4Ñ(Ô(ˆAØÐ�hØ—W’W˜XÑ&Ô&×,Ò,Ñ.Ô.ˆFØ—W’W˜XÑ&Ô&×,Ò,Ñ.Ô.ˆFÝ(¨Ñ0Ô0ˆE�&‰MˆMð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1ð €Ls   ”BB2Â2B6Â9B6Ú__main__)NNFNr²   )NNr   r   r   FNr+   )Frj  Ú__all__rú   r÷   r»  Úpathlibr   rý   r   Údistutils.fancy_getoptr	   Údistutils.errorsr
   r   r   r   r   Údistutils.utilr   r   Únumpy.distutils.ccompilerr   r   Únumpy.distutilsr   Únumpy.distutils.misc_utilr   r   r   r   r   Únumpy.distutils.exec_commandr   r   Úenvironmentr   ÚtypeÚ__metaclass__r  Ú	Exceptionr#   r.   r1   r4   r   rº  rŸ  r¡  r®  r¸  rÀ  rÂ  r¨   rÆ  r   r   r   ÚcompileÚIÚsearchrí  rï  rî  r¼  rñ  r#  r   rû  r!  r$   r'   r(   r)   ú<module>r     sÏ  ððð ð!ð !ð !€ð 
€	€	€	Ø 
€
€
€
Ø 	€	€	€	Ø Ð Ð Ð Ð Ð à .Ð .Ð .Ð .Ð .Ð .Ø .Ð .Ð .Ð .Ð .Ð .ðIð Ið Ið Ið Ið Ið Ið Ið Ið Ið Ið Ið Ið Ià 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2à @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø Ð Ð Ð Ð Ð ð-ð -ð -ð -ð -ð -ð -ð -ð -ð -ð -ð -ð -ð -à 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø (Ð (Ð (Ð (Ð (Ð (à *Ð *Ð *Ð *Ð *Ð *à€ð #AÐ"@Ð"@Ð ð	ð 	ð 	ð 	ð 	�yñ 	ô 	ð 	ðð ð ðð ð ð
1ð 1ð 1ðo
$ð o
$ð o
$ð o
$ð o
$�	ñ o
$ô o
$ð o
$ðfÐ ð& €ØÐ ð4ð 4ð 4ð: 48Ø(-Ø(,ð#ð #ð #ð #ðJ#ð #ð #ð #ð BGØ%)ðð ð ð ð  �C‘E”EÐ àØØØØØ"Ø#ð%ð %ð %ð %ðN9Lð 9Lð 9Lð 9Lðxð ð ð �”
Ð3°R´TÑ:Ô:ÔA€Ø�"”*Ð1°2´4Ñ8Ô8Ô?€Ø�"”*Ð1°2´4Ñ8Ô8Ô?€Ø�"”*Ð2°B´DÑ9Ô9Ô?€ðð ð ð.:ð :ð :ð
 ˆrŒzÐZÐ\^Ô\`ÑaÔa€ðð ð ð* ˆzÒÐØ€OÑÔÐÐÐð Ðr(   